#!/bin/sh

app=back-mg-apijson-1.0-SNAPSHOT.jar

# 打印绿色
print() {
  printf "\033[32m %s \033[0m\n" "$*"
}

# 检查程序是否在运行
is_exist() {
  if [ -z "$app" ]; then
    print 服务名称为空
    exit 1
  fi
  # 'grep -v 进程名称' 排除进程
  # grep 运行时会多出 grep 进程
  # 以 shell 脚本运行时会多出 sh 进程
  # shellcheck disable=SC2009
  pid=$(ps -ef | grep "$app" | grep -v grep | grep -v sh | awk '{print $2}')
  # 不存在返回 1，存在返回 0
  if [ -z "$pid" ]; then
    return 1
  else
    return 0
  fi
}

# 启动方法
start() {
  if is_exist; then
    print "已运行 ${pid} ${app}"
  else
    nohup java -jar "$app"  >"${app%.*}".log 2>&1 &
    if [ $? ]; then
      print "启动成功 ${app}"
    else
      print "启动失败 ${app}"
    fi
  fi
}

# 停止方法
stop() {
  if is_exist; then
    kill -9 "$pid"
    if [ $? ]; then
      print "停止成功 ${app}"
    else
      print "停止失败 ${app}"
    fi
  else
    print "未运行 ${app}"
  fi
}

# 输出运行状态
status() {
  if is_exist; then
    print "已运行 ${pid} ${app}"
  else
    print "未运行 ${app}"
  fi
}

# 重启
restart() {
  stop
  start
}

# 根据输入参数选择执行对应方法，不输入或无匹配指令则显示提示
case $1 in
start)
  start
  ;;
stop)
  stop
  ;;
status)
  status
  ;;
restart)
  restart
  ;;
*)
  print "${1} 命令不存在"
  exit 1
  ;;
esac
